package com.demo.uploadpic_base64;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;

/**
 * 扩展卡的处理工具类
 * 
 * @author Mr.Y
 */
public class SDCardUtils {

	/**
	 * 判断当前的SDCard是否可用
	 * 
	 * @return
	 */
	public static boolean isUsable() {
		return Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED);

	}

	/**
	 * 保存图片方法
	 * 
	 * @param fileName
	 * @param bytes
	 * @return
	 */
	public static boolean saveImage(String fileName, byte[] bytes) {
		if (isUsable()) {
			File fileDir = new File(Constants.PATH_IMAGE);
			if (!fileDir.exists()) {
				fileDir.mkdirs();
			}
			File imageFile = new File(Constants.PATH_IMAGE,
					getFileName(fileName));
			try {
				if (!imageFile.exists()) {
					imageFile.createNewFile();
				}

				FileOutputStream fos = new FileOutputStream(imageFile);
				fos.write(bytes);
				fos.flush();
				fos.close();

			} catch (IOException e) {
				e.printStackTrace();
			}

			return true;

		}
		return false;

	}

	/**
	 * 读取图片方法
	 * 
	 * @param url
	 * @param bytes
	 * @return
	 */
	public static Bitmap readImage(String url) {
		if (!isUsable()) {
			return null;

		} else {

			File imageFile = new File(getImageDir(), getFileName(url));

			if (!imageFile.exists()) {
				return null;
			} else {

				try {
					Bitmap bitmap = BitmapFactory.decodeFile(imageFile
							.getAbsolutePath());
					return bitmap;

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return null;

	}

	/**
	 * 获取图片文件保存路径
	 * 
	 * @return
	 */
	public static String getImageDir() {
		File file = new File(Constants.PATH_IMAGE);
		if (!file.exists())
			file.mkdirs();

		return Constants.PATH_IMAGE;
	}

	/**
	 * 获取URI地址的文件名
	 * 
	 * @param url
	 * @return
	 */
	public static String getFileName(String url) {
		String fileName = url.substring(url.lastIndexOf("/") + 1);
		return fileName;
	}

	/**
	 * 初始化数据表
	 */
	public static void initDBPath() {
		File file = new File(Constants.PATH_BD);
		if (!file.exists())
			file.mkdirs();
	}

	/**
	 * 清除缓存引用的方法
	 * 
	 * @return
	 */
	public static int clearCache() {
		File file = new File(Constants.PATH_CACHE);
		if (!file.exists())
			return 0;
		else
			return 1;
	}

	/**
	 * 删除缓存文件
	 * 
	 * @param file
	 * @return
	 */
	public static int deleteFile(File file) {
		if (file.isFile()) {
			file.delete();
			return 1;
		}

		int fileCount = 0;
		for (File f : file.listFiles()) {
			fileCount += deleteFile(f);
		}
		return fileCount;

	}
}
